package com.css.util;


import com.css.config.SpringContextHolder;
import org.springframework.context.ApplicationContext;

/**
 *
 * @project qyd-znsb
 * @package com.css.znsb.framework.common.ioc
 * @file SpringIocUtils.java 创建时间:2024/4/9 21:41
 * @title 标题（要求能简洁地表达出类的功能和职责）
 * @description 描述（简要描述类的职责、实现方式、使用注意事项等）
 * @copyright Copyright (c) 2024 中国软件与技术服务股份有限公司
 * @company 中国软件与技术服务股份有限公司
 * @module 模块: 风险分析池
 * @author 商健
 * @reviewer 审核人
 * @version 1.0.0
 * @history 修订历史（历次修订内容、修订人、修订时间等）
 *
 */
public class SpringIocUtils {

    // 添加延迟加载机制
    public static <T> T getBean(Class<T> clazz) {
        return getContext().getBean(clazz);
    }

    public static <T> T getBean(String name, Class<T> clazz) {
        return getContext().getBean(name, clazz);
    }

    private static ApplicationContext getContext() {
        ApplicationContext ctx = SpringContextHolder.getApplicationContext();
        if (ctx == null) {
            throw new ContextNotReadyException("Spring上下文未就绪");
        }
        return ctx;
    }

    // 自定义异常
    static class ContextNotReadyException extends RuntimeException {
        public ContextNotReadyException(String message) {
            super(message);
        }
    }

}
